﻿using System;
using System.Net;

namespace SilverlightCairngorm.Business
{
	public interface IServiceLocator
	{
		/**
		* Return the HTTPService for the given service id.
		* @param name the name of the HTTPService.
		* @return the RemoteObject.
		*/
		WebClient getHTTPService(String name);

		/// <summary>
		/// register a webclient as named HTTPService
		/// </summary>
		/// <param name="serviceName"></param>
		/// <param name="serviceClient"></param>
		void addHTTPService(string serviceName, WebClient serviceClient);

		/// <summary>
		/// un-register a welclient as named HTTPSercice
		/// </summary>
		/// <param name="serviceName"></param>
		void removeHTTPService(string serviceName);

		/**
		* Set the credentials for all registered services. Note that services
		* that use a proxy or a third-party adapter to a remote endpoint will
		* need to setRemoteCredentials instead.
		* @param username the username to set.
		* @param password the password to set.
		*/
		void setCredentials(String username, String password);

		/**
		* Set the remote credentials for all registered services.
		* @param username the username to set.
		* @param password the password to set.
		*/
		void setRemoteCredentials(String username, String password);

		/**
		* Logs the user out of all registered services.
		*/
		void logout();
	}
}
